<?php

Yii::import('clientes.models._base.BasePersona');

class Persona extends BasePersona {

  private $nombre_completo;

  /**
   * @return Persona
   */
  public static function model($className = __CLASS__) {
    return parent::model($className);
  }

  public static function label($n = 1) {
    return Yii::t('app', 'Persona|Personas', $n);
  }

  public function rules() {
    return array_merge(array(
//            array('cedula', 'required'),
        array('cedula', 'required'),
        array('id_grado, id_provincia, id_tipo_sangre, id_licencia, id_vuelo, id_genero', 'numerical', 'integerOnly' => true),
        array('apellidos, nombres, foto, ciudad, numero_cuenta, fusil', 'length', 'max' => 50),
        array('peloton', 'length', 'max' => 2),
        array('cedula', 'length', 'max' => 10),
        array('codigo_isffa', 'length', 'max' => 20),
        array('peloton', 'default', 'setOnEmpty' => true, 'value' => null),
        array('id_persona, id_grado, apellidos, nombres, peloton, cedula, codigo_isffa, foto, fecha_nacimiento, id_provincia, ciudad, numero_cuenta, fusil, id_tipo_sangre, id_licencia, id_vuelo, id_genero', 'safe', 'on' => 'search'),
    ));
  }

  public function attributeLabels() {
    return array_merge(array(
//                'id_persona' => Yii::t('app', 'Id Persona'),
        'id_grado' => Yii::t('app', 'Grado'),
        'apellidos' => Yii::t('app', 'Apellidos'),
        'nombres' => Yii::t('app', 'Nombres'),
        'peloton' => Yii::t('app', 'Pelotón'),
        'cedula' => Yii::t('app', 'N° de Cédula'),
        'codigo_isffa' => Yii::t('app', 'N° Tarjeta Militar'),
        'foto' => Yii::t('app', 'Foto'),
        'fecha_nacimiento' => Yii::t('app', 'Fecha de Nacimiento'),
        'id_provincia' => Yii::t('app', 'Provincia donde vive'),
        'ciudad' => Yii::t('app', 'Ciudad'),
        'numero_cuenta' => Yii::t('app', 'N° de Cuenta Bancaria'),
        'fusil' => Yii::t('app', 'N° Fusil'),
        'id_tipo_sangre' => Yii::t('app', 'Tipo de Sangre'),
        'id_licencia' => Yii::t('app', 'Mes de Licencia'),
        'id_vuelo' => Yii::t('app', 'Vuelos'),
        'id_genero' => Yii::t('app', 'Genero'),
    ));
  }

//verificar los metodos
  public function relations() {
    return array_merge(array(
        'perGenCodigo' => array(self::BELONGS_TO, 'Genero', 'id_genero'),
        'perGraCodigo' => array(self::BELONGS_TO, 'Grado', 'id_grado'),
        'perProCodigo' => array(self::BELONGS_TO, 'Provincia', 'id_provincia'),
        'perSanCodigo' => array(self::BELONGS_TO, 'TipoSangre', 'id_tipo_sangre'),
        'perLicCodigo' => array(self::BELONGS_TO, 'Licencia', 'id_licencia'),
//            'dirPerCodigo' => array(self::HAS_MANY, 'Direccion', 'id_direccion'),
//             'telefonos' => array(self::BELONGS_TO, 'Telefono', 'id_telefono'),
//            'telOpeCodigo' => array(self::BELONGS_TO, 'Operadora', 'id_operadora'),
    ));
  }

  public function searchParams() {
    return array(
        'id_persona',
        'id_grado',
        'apellidos',
        'nombres',
        'peloton',
        'cedula',
        'codigo_isffa',
//            'cedula',
//            'Emp_Gru_Eco_Codigo',
//            aumentar si es necesario
    );
  }

//Acoplar a persona
  public function getPersonaSearch($persona) {
    $command = Yii::app()->db->createCommand()
            ->select('pr.id_grado')
            ->from('persona pr')
            ->leftjoin('grado gr', 'pr.id_grado=gr.id_grado');
    if ($persona) {//viene solo los ids de las empresas
      $command->andWhere('pr.id_persona in (' . $persona . ')');
    }
    return $command->queryRow();
  }

  public function search() {
    $criteria = new CDbCriteria;
    $sort = new CSort;

//        $criteria->
    $criteria->with = array(
        'perGenCodigo',
        'perGraCodigo',
//            'dirPerCodigo',
//            'telefonos'
//            'telOpeCodigo',
//            'telefonos',
            //poner si es necesario
    );
    $criteria->compare('id_persona', $this->id_persona, true, 'OR');
    $criteria->compare('perGraCodigo.descripcion', $this->id_grado, true, 'OR');
    $criteria->compare('perGenCodigo.descripcion', $this->id_genero, true, 'OR');
//        $criteria->compare('telefonos.numero', $this->id_telefono, true, 'OR');
//        $criteria->compare('telOpeCodigo.descripcion', $this->id_operadora, true, 'OR');
    $criteria->compare('Apellidos', $this->apellidos, true, 'OR');
    $criteria->compare('Nombres', $this->nombres, true, 'OR');
    $criteria->compare('Cedula', $this->cedula, true, 'OR');
    $criteria->compare('Codigo_isffa', $this->codigo_isffa, true, 'OR');

    /* Sort criteria */
//        $sort->attributes = array(
//            'id_persona' => array(
//                'asc' => 'id_persona asc',
//                'desc' => 'id_persona desc',
//            ),
//            '*',
//        );
    $sort->defaultOrder = 'id_persona asc';
//        var_dump($criteria);
    //seleccionaar campos por lo de los filtros


    return new CActiveDataProvider($this, array(
        'criteria' => $criteria, 'sort' => $sort,
    ));
  }

  public function getListSelect2($search_value = null, $cuenta_id = null, $hasmail = false) {

    $command = Yii::app()->db->createCommand()
            ->select('t.id_persona as id,CONCAT(IFNULL(CONCAT(t.cedula," "),""),IFNULL(CONCAT(t.nombres," "),""),IFNULL(t.apellidos,"")) as text')
            ->from('registrofae.persona t');
    //        TODO: estado activo inactivo
//                ->where('t.estado = :estado', array(':estado' => Cuenta::ESTADO_ACTIVO));
    if ($search_value) {
      $command->where("t.cedula like '$search_value%' OR CONCAT(IFNULL(CONCAT(t.nombres,' '),''),IFNULL(t.apellidos,'')) like '$search_value%'");
    }

//        $command->limit(10);
    return $command->queryAll();
  }

  //metodos para contacatenar nombres
  public function getNombre_completo() {
    if (!$this->nombre_completo)
      $this->nombre_completo = $this->nombres . ($this->nombres ? ' ' : '') . $this->apellidos;
    return $this->nombre_completo;
  }

  public function setNombre_completo($nombre_completo) {
    $this->nombre_completo = $nombre_completo;
    return $this->nombre_completo;
  }

}
